from django.db import models


# ORM一对多
class UserType(models.Model):
    name = models.CharField(max_length=30, unique=True)

    def __str__(self):
        return f'{self.name}'


class User(models.Model):
    name = models.CharField(max_length=30, unique=True)
    age = models.IntegerField(default=18)
    user_type = models.ForeignKey(UserType, on_delete=models.CASCADE)
    """
    on_delete参数主要有以下⼏个可选值：
    models.CASCADE 表示级联删除，即删除UserType时， 相关联的UserInfo也会被删除。不建议使用
    models.PROTECT 保护模式， 阻⽌级联删除。 
    models.SET_NULL 置空模式，设为null，null=True参数必须具备 
    models.SET_DEFAULT 置默认值 设为默认值，default参数必须具备 
    models.SET() 删除的时候重新动态指向⼀个实体访问对应元素，可传函数 
    models.DO_NOTHING 什么也不做。不建议使用
    注意: 修改on_delete参数之后需要重新数据迁移
    """

    def __str__(self):
        return f'{self.name}-{self.age}'